import { audit, transition } from "@autoscholar/core"; import { handler, json } from "@/lib/server/api"; import { db } from "@/lib/server/db"; import { requireAdmin } from "@/lib/server/session"; export const runtime = "nodejs"; /** Re-runs the deterministic quality gates on the existing artifacts (e.g. after a gate policy fix). */ export const POST = handler(async (req, { params }) => { const sess = await requireAdmin(req, { mutation: true }); const { runId } = (await params) as { runId: string }; const run = await db().transaction(async (tx) => { const r = await transition(tx, runId, "quality_check", { actor: `admin:${sess.userId}`, reason: "re-evaluation requested", expectFrom: ["quality_failed"], }); await audit(tx, { type: "admin", id: sess.userId, ip: sess.ip }, "quality.reevaluate", { type: "run", id: runId, }); return r; }); return json({ ok: true, status: run.status }); });